package com.crazyant;

import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;


public class Protagonista {
	BitmapFactory.Options options;
	public Bitmap personaje;
	public float suelo;
	
	private float x;
	private float y;
	private float tx;
	private float ty;
	
	Objecte jugador;
	Resources resources;
	private int cau;
	
	public Protagonista () {
		options = new BitmapFactory.Options();
		options.inPreferredConfig = Bitmap.Config.ARGB_8888;
		resources = GV.Instancies.game11.getResources();
		
		GV.Control.csalto = 0;
		GV.Control.cplat = 0;
		
		ty = (float)((GV.Screen.metrics.heightPixels/1.5)*0.075);
	    tx = (float)(GV.Screen.metrics.widthPixels*0.075);
	    //Limite de choque con el suelo
	    suelo = (GV.Screen.metrics.heightPixels)-(ty*3.5f);
	    
		x  = tx*2;
		y = (GV.Screen.metrics.heightPixels)-(ty*3.5f);
		ty = (float)((GV.Screen.metrics.heightPixels*0.2));
		suelo -= ty;
		y -= ty;
		cau = 1;
		if(GV.BBDD.r == 0) {
			if(GV.BBDD.color == 0) 
				jugador = new Objecte(x, y, 0, 0, tx, ty, 0, 3, BitmapFactory.decodeResource(resources, R.drawable.prota0, options));
			else if (GV.BBDD.color == 1)
				jugador = new Objecte(x, y, 0, 0, tx, ty, 0, 3, BitmapFactory.decodeResource(resources, R.drawable.prota1, options));
			else if(GV.BBDD.color == 2) 
				jugador = new Objecte(x, y, 0, 0, tx, ty, 0, 3, BitmapFactory.decodeResource(resources, R.drawable.prota2, options));
		}
		else cargaProta(GV.BBDD.color);
		
		GV.Instancies.prot = jugador;
	}
	
	public void actualiza() {
		if(GV.Game.vida == 0) {
			GV.Instancies.fast_die = 1;
		}
		else {
			if(GV.Instancies.salto == 1 && jugador.vy == 0) {
				GV.Instancies.salto = 0;
				jugador.vy = -GV.Screen.metrics.heightPixels*0.06f;
				GV.Control.csalto = 1;
				GV.Control.cplat = 0;
			}
			else if (GV.Instancies.salto == 0){
				jugador.vy += GV.Screen.metrics.heightPixels*0.005;
			}
			if(jugador.y + jugador.vy > suelo) {
				jugador.y = suelo;
				jugador.vy = 0;
				GV.Instancies.salto = 3;
				GV.Control.csalto = 0;
			}
			if(GV.Control.cplat == 1) {
				GV.Control.csalto = 0;
			}
		}
	}
	
	
	public void actualitza_die() {
		if(cau == 1) {
			jugador.vy = -GV.Screen.metrics.heightPixels*0.06f;
			cau = 0;
		}
		else jugador.vy += GV.Screen.metrics.heightPixels*0.005;
		
		if(jugador.y > GV.Screen.metrics.heightPixels){
			GV.Game.gameover = 1;
		}
	}
	
	public void cargaProta(int id) {
		String icon = "prota"+id;
		int rest = resources.getIdentifier(icon, "drawable", "com.crazyant");
		jugador = new Objecte(x, y, 0, 0, tx, ty, 0, 3, BitmapFactory.decodeResource(resources, rest, options));
	}
	
	public void draw(Canvas canvas){
		jugador.actualitza();
		jugador.draw(canvas);
}	
}